/***************************************************************************
 创建者: 华磊
 开始时间: 2018.12.13
 copyright: (C) 华友高科
 修改说明: (每次有修改就添加一条，带有 修改人，修改时间，修改描述)
 example (1) hualei 2020.5.8 类的具体实现代码编写
 (1) 华磊 2019.3.12 增加断线重连机制；激光数据增加直接函数调用获取接口

 ***************************************************************************
 *  @file x.h
 *  功能:
 *
 *                                                                         *
 ***************************************************************************/
#ifndef LASERDRIVERSICKTIME_H
#define LASERDRIVERSICKTIME_H
#include "laserdriverabstract.h"
#include <string>
#include <ros/ros.h>
#include "globalDefine.h"
#include <qdebug.h>

namespace sick_tim {
class SickTimCommon;
class SickTim5512050001Parser;
}

class LaserDriverSickTime : public LaserDriverAbstract
{
public:
    LaserDriverSickTime(LaserDriverConfig configIn);
    ~LaserDriverSickTime();
public:
    int getStatus();
    int initialDriver(LaserDriverConfig configIn);
    int publishLaserDataLoopOnce();
    int shutDownDriver();
    bool isDriverStatusOk();
    int getLaserSensorData(sensor_msgs::LaserScan &laserSensorDataOut);
private:
    void* threadRun(void *);
    static void* threadTask( void* classPtr );
    void createThread();
private:
    bool isShutDown;
    pthread_t threadId;
private:
    sick_tim::SickTimCommon* sickTimDriver;
    sick_tim::SickTim5512050001Parser* parser;

};

#endif // LASERDRIVERSICKTIME_H
